package com.oh.core.common.codec;

import com.oh.core.entity.MessageEntity;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandler;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.MessageToByteEncoder;
import org.springframework.stereotype.Component;

@ChannelHandler.Sharable
@Component
public class OhEncoder extends MessageToByteEncoder<byte []> {

    @Override
    protected void encode(ChannelHandlerContext channelHandlerContext, byte[] bytes, ByteBuf byteBuf) throws Exception {
        MessageEntity messageEntity = new MessageEntity(bytes);
        // 1-1 指令
        byteBuf.writeByte(messageEntity.getCommand());
        // 2-4 魔数
        byteBuf.writeInt(messageEntity.getMagic());
        // 3-4 报文长度
        byteBuf.writeInt(messageEntity.getLength());
        // 4 内容
        byteBuf.writeBytes(messageEntity.getBody());
    }
}
